package com.softer.chengxin.dongle.service;

import com.softer.chengxin.common.domin.CommonResult;
import com.softer.chengxin.common.domin.ManagerPageResult;
import com.softer.chengxin.common.domin.Page;
import com.softer.chengxin.dongle.domin.DongleInfoDTO;
import com.softer.chengxin.dongle.domin.DongleInfoVO;

import java.util.List;

/**
 * @author Gong Zhiyang
 * @date 2018/9/26
 */
public interface DongleService {

    /**
     * 主管部门获取企业自有加密狗设备列表
     *
     * @param id        企业ID
     * @param loginName 登陆账号
     * @return 结果集
     */
    List<DongleInfoVO> loadDongleInfo(Integer id, String loginName);

    /**
     * 加密设备删除
     *
     * @param id 加密狗ID
     * @return 处理结果
     */
    CommonResult deleteDongleInfo(Integer id);


    /**
     * 加密狗设备添加
     *
     * @param dongleInfoDTO 加密狗信息
     * @param loginName     登陆用户
     * @return 添加结果
     */
    CommonResult addDongleInfo(DongleInfoDTO dongleInfoDTO, String loginName);

    /**
     * 修改加密狗状态
     *
     * @param keyCode 令牌号
     * @param state   状态
     * @return 结果
     */
    CommonResult update(Integer id, Integer state);

    /**
     * 获取企业加密狗设备列表
     *
     * @param page 页面实体
     * @param id   企业Id
     * @return 列表
     */
    ManagerPageResult loadQyDongleInfo(Page page, Integer id);

    /**
     * 主管部门获取加密狗企业列表
     *
     * @param page      页面实体
     * @param name      企业名
     * @param state     状态（1基本信息提交，2已注册备案）
     * @param loginName 登陆账号
     * @return 企业列表
     */
    ManagerPageResult loadCorpList(Page page, String name, Integer state, String loginName);

    /**
     * 企业给项目绑定加密狗时，先校验加密狗
     *
     * @param code 加密狗
     * @return 校验结果
     */
    CommonResult check(String code);
}
